package com.ruoyi.system.utils;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

public class PageConvertUtil {

    /**
     * 转换当前页和每页条数为start和num
     * @param currentPage 当前页码（从1开始）
     * @param pageSize 每页条数
     * @return 包含start和num的结果对象
     */
    public static PageParam convert(int currentPage, int pageSize) {
        // 处理当前页小于1的情况（默认按第1页处理）
        int validPage = Math.max(currentPage, 1);
        // 处理每页条数：最小1条，最大50条
        int validNum = Math.min(Math.max(pageSize, 1), 50);
        // 计算start：start = (当前页-1) * 每页条数
        int start = (validPage - 1) * validNum;

        return new PageParam(start, validNum);
    }

    /**
     * 分页参数结果类
     */
    @Data
    @ApiModel(description = "分页查询参数（start和num）")
    public static class PageParam {
        @ApiModelProperty(value = "起始索引（从0开始）", example = "0")
        private int start;

        @ApiModelProperty(value = "查询数量（1-50之间）", example = "10")
        private int num;

        public PageParam(int start, int num) {
            this.start = start;
            this.num = num;
        }
    }
}
